bitmasks dp *2200

Please click on ads to support us..

C++ Code:

#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;

#define ordered_set tree<int, null_type,less<int>, rb_tree_tag,tree_order_statistics_node_update>
using namespace std;
#define e "\n"
#define ll long long
#define all(v) v.begin(),v.end()

void fast() {
    ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
#ifndef ONLINE_JUDGE
    freopen("input.txt", "r", stdin),
            freopen("output.txt", "w", stdout);
#endif
}

const ll mod = 1e9+7 , N = 3e5+2, M = 2e3+2;
int t,id;
int dx[] = {0, 0, 1, -1};
int dy[] = {1, -1, 0, 0};

ll gcd(ll a, ll b) { return (!b) ? a : gcd(b, a % b); }

ll lcm(ll a, ll b) { return a / gcd(a, b) * b; }
int freq[1 << 20];
void solve() {
    string s;
    cin >> s;
    int curr;
    for (int i = 0; i < s.size(); ++i) {
        curr = 0;
        for (int j = i; j < s.size(); ++j) {
            if (curr & (1 << (s[j] - 'a')))break;
            curr |= (1 << (s[j] - 'a'));
            freq[curr] = (j - i) + 1;
        }
    }
    // 2e7
    int ans=1;
    for (int i = 0; i < 1<<20; ++i)
        for (int j = 0; j < 20; ++j)if ((1 << j) & i)
        {
            freq[i]= max(freq[i], freq[i^(1<<j)]);
        }
    int mx=0;
    for (int i = 0; i < 1<<20; ++i) {
        int cpy=(1<<20)-1-i;
       mx= max(mx,freq[i]+freq[cpy]);
    }
  //  cout<<freq[((1<<20)-1)|(1<<('f'-'a'))]<<e;

    cout<<mx;

}
int main() {
    fast();
    t = 1,id=1;
    //cin >> t ;
    while (t--)
        solve(),++id;


}







Comments

Submit
0 Comments
More Questions

1302. Deepest Leaves Sum
1209. Remove All Adjacent Duplicates in String II
994. Rotting Oranges
983. Minimum Cost For Tickets
973. K Closest Points to Origin
969. Pancake Sorting
967. Numbers With Same Consecutive Differences
957. Prison Cells After N Days
946. Validate Stack Sequences
921. Minimum Add to Make Parentheses Valid
881. Boats to Save People
497. Random Point in Non-overlapping Rectangles
528. Random Pick with Weight
470. Implement Rand10() Using Rand7()
866. Prime Palindrome
1516A - Tit for Tat
622. Design Circular Queue
814. Binary Tree Pruning
791. Custom Sort String
787. Cheapest Flights Within K Stops
779. K-th Symbol in Grammar
701. Insert into a Binary Search Tree
429. N-ary Tree Level Order Traversal
739. Daily Temperatures
647. Palindromic Substrings
583. Delete Operation for Two Strings
518. Coin Change 2
516. Longest Palindromic Subsequence
468. Validate IP Address
450. Delete Node in a BST